import re

# 验证密码中是否含有三种以上字符
def passwd_check1(passwd):
                flag1 = 0
                for k in passwd:
                 if 48 <= ord(k) <= 57:
                     flag1 += 1
                   #  print(k+"数字")
                     break
                for i in passwd:
                 if 65 <= ord(i) <= 90:
                    flag1 += 1
                   # print(i+'大写')
                    break
                for j in passwd:
                 if 97 <= ord(j) <= 122:
                    flag1 += 1
                    #print(j+'小写')
                    break
                # if re.search(r"\w",passwd) == True:
                for l in passwd:
                 if l in "~!@#$%^&*()_+-*/<>,.[]\/":
                    flag1 += 1
                    break
                if flag1 >= 3:
                 return 1
                else:
                 return 0
# 验证密码中字串的重复性
def passwd_check2(passwd):
    for i in range(len(passwd)-2):
           if passwd[i:i+3] in passwd[i+1:len(passwd)]:
               return 0
           else:
               continue
    return 1
# if flag < 5 :
# print("你的密码等级为%d"%flag+ ' \033[41m        \033[0m')
# print("密码没有包含三种以上字符，请重新输入！")
# continue
# else:
# if flag == 6:
#  print("你的密码等级为%d" % flag+' \033[44m        \033[0m')
# if flag == 5:
#  print("你的密码等级为%d" % flag + ' \033[43m        \033[0m')
# print('密码设置成功！')
# break
#
# 主函数
print("{0:#^50}".format('密码验证程序'))
while True:
    # 定义密码等级变量
        global grade
        grade = 2
        passwd = input("请输入你的密码：")
        if len(passwd) < 8:
             print('你输入的密码长度不足八位')
             print("请重新输入!\n")
             continue
        else:
            grade += 1
            if passwd_check1(passwd) == 1 and  passwd_check2(passwd) == 1:
               grade += 2
               #绿色标记——密码等级最高
               print("设置成功——你的密码等级为%d--较高" % grade + ' \033[44m        \033[0m')
               break
            # if passwd_check1(passwd) == 0 :
            #     #红色标记——密码等级最低
            #     print("设置成功——你的密码等级为%d--较低" % grade + ' \033[41m        \033[0m')
            #     print("密码尽量包含三种以上字符并且不含有长度超过3个的重复字串")
            #     break
            if passwd_check1(passwd) == 1 and passwd_check2(passwd) == 0:
                #黄色标记——密码等级一般
               grade += 1
               print("设置成功——你的密码等级为%d--一般" % grade + ' \033[43m        \033[0m')
               print("密码中超过3个连续字符段有重复")
               break
            elif passwd_check1(passwd) == 0 and passwd_check2(passwd) == 1:
                print("设置成功——你的密码等级为%d--一般" % grade + ' \033[43m        \033[0m')
                print("密码尽量包含三种以上字符")
            else:
                print("设置成功——你的密码等级为%d--较低" % grade + ' \033[41m        \033[0m')
                print("密码尽量包含三种以上字符并且不含有长度超过3个的重复字串")

            # if passwd_check2(passwd) == 1:
            #     grade += 1
            #     print("设置成功——你的密码等级为%d--一般" % grade +' \033[43m         \033[0m')
            #     print("密码中超过3个连续字符段有重复")


